import sys

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

'''
QinputDialog.getItem
            .getText
            .getInt
字字体对话框， QfontDialog
颜色对话框， QcolorDialog
'''

class QInputDialogDemo(QWidget):
    def __init__(self):
        super(QInputDialogDemo, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('输入对话框')
        # self.resize(300,300)

        layout = QFormLayout()

        self.btn1 = QPushButton('获取列表中的选项')
        self.btn1.clicked.connect(self.getItem)
        self.lineEdit1 = QLineEdit()
        layout.addRow(self.btn1, self.lineEdit1)

        self.btn2 = QPushButton('获取字符串')
        self.btn2.clicked.connect(self.getText)
        self.lineEdit2 = QLineEdit()
        layout.addRow(self.btn2, self.lineEdit2)

        self.btn3 = QPushButton('获取整数')
        self.btn3.clicked.connect(self.getInt)
        self.lineEdit3 = QLineEdit()
        layout.addRow(self.btn3, self.lineEdit3)

        self.fontButton = QPushButton('选择字体')
        self.fontButton.clicked.connect(self.getfont)
        self.fontLable = QLabel('hello, 测试字体')
        layout.addRow(self.fontButton, self.fontLable)

        self.colorButton = QPushButton('选择颜色')
        self.colorButton.clicked.connect(self.getColor)
        self.colorLable = QLabel('hello, 测试字体')
        layout.addRow(self.colorButton, self.colorLable)

        self.setLayout(layout)

    def getItem(self):
        items = ('C', 'C++', 'Java', 'Python', 'Pytorch')
        item, ok = QInputDialog.getItem(self, '请选择编程语言', '语言列表', items)
        if ok and item:
            self.lineEdit1.setText(item)
    def getText(self):
        item, ok = QInputDialog.getText(self, '文本输入框', '输入姓名')
        if ok and item:
            self.lineEdit2.setText(item)
    def getInt(self):
        num, ok = QInputDialog.getInt(self, '整数输入框', '输入数字')
        if ok and num:
            self.lineEdit3.setText(str(num))

    def getfont(self):
        font, ok = QFontDialog.getFont()
        if ok:
            self.fontLable.setFont(font)

    def getColor(self):
        color = QColorDialog.getColor()
        p = QPalette()
        p.setColor(QPalette.WindowText, color)
        self.colorLable.setPalette(p)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = QInputDialogDemo()
    ex.show()
    sys.exit(app.exec_())